home *** CD-ROM | disk | FTP | other *** search
/ Software 2000 / Software 2000 Volume 1 (Disc 2 of 2).iso / demos / d008.dms / in.adf / Sprite_Plotter.AMOS / Sprite_Plotter.amosSourceCode
Encoding:
AMOS Source Code  |  1991-02-11  |  4.2 KB  |  135 lines

  1. '                            Simple Sprite Plotter   
  2. '
  3. '                              By Peter Hickman
  4. '
  5. SPNUM=1 : BITPLANES=4 : XSIZE=0 : YSIZE=0 : BITPLANES=4
  6. XHOT=0 : YHOT=0 : NUMBER_OF_SPRITES=0 : BCOL=15
  7. Global SPNUM,BITPLANES,XSIZE,YSIZE,BITPLANES
  8. Global XHOT,YHOT,NUMBER_OF_SPRITES,BCOL
  9. X Mouse=260 : Y Mouse=130
  10. SET_UP_SCREEN
  11. FILE_LOAD
  12. Repeat 
  13.    TEMP$=Upper$(Inkey$)
  14.    TEMP=Mouse Key
  15.    Screen 1
  16.    Inverse On 
  17.    Print At(18,5);"Xmouse:";X Screen(0,X Mouse);"  ";At(50,5);"Yscreen:";Y Screen(0,Y Mouse);"  ";
  18.    Inverse Off 
  19.    Screen 0
  20.    If TEMP$="+" and SPNUM<NUMBER_OF_SPRITES
  21.       Inc SPNUM
  22.       FIND_SPRITE_SIZE
  23.       Amreg(0)=SPNUM : Wait 2
  24.    End If 
  25.    If TEMP$="-" and SPNUM>1
  26.       Dec SPNUM
  27.       FIND_SPRITE_SIZE
  28.       Amreg(0)=SPNUM : Wait 2
  29.    End If 
  30.    If TEMP$="Z"
  31.       Add BCOL,-1,0 To(2^BITPLANES)-1
  32.       FIND_SPRITE_SIZE
  33.    End If 
  34.    If TEMP$="A"
  35.       Add BCOL,1,0 To(2^BITPLANES)-1
  36.       FIND_SPRITE_SIZE
  37.    End If 
  38.    If TEMP$="L" Then FILE_LOAD
  39.    If TEMP$="S" Then PIC_SAVE
  40.    If TEMP$="U" Then UNDO
  41.    If TEMP=1 Then PLACE_BOB
  42.    If TEMP$="C" Then CLEAR_SCREEN
  43. Until TEMP$="Q"
  44. Procedure SET_UP_SCREEN
  45.    Screen Open 0,320,200,2^BITPLANES,Lowres
  46.    Curs Off : Flash Off : Cls 0 : Double Buffer : Autoback 2
  47.    Screen Display 0,,42,,
  48.    Screen Open 1,640,55,2,Hires
  49.    Curs Off : Flash Off : Cls 0 : Palette $0,$FFF : Pen 1 : Paper 0
  50.    Screen Display 1,,244,, : Inverse On : Print At(,5);Space$(79); : Inverse Off 
  51.    Screen Open 2,320,200,2^BITPLANES,Lowres
  52.    Curs Off : Flash Off : Cls 0 : Screen Hide 2
  53.    Screen To Front 0
  54.    Screen 0
  55. End Proc
  56. Procedure FIND_SPRITE_SIZE
  57.    NUMBER_OF_SPRITES=Length(1)
  58.    TEMP=Sprite Base(SPNUM)
  59.    XSIZE=Deek(TEMP)*16
  60.    YSIZE=Deek(TEMP+2)
  61.    BITPLANES=Deek(TEMP+4)
  62.    XHOT=Deek(TEMP+6)
  63.    YHOT=Deek(TEMP+8)
  64.    TX=X Mouse : TY=Y Mouse
  65.    Limit Mouse X Hard(1)+XHOT,Y Hard(1)+YHOT To X Hard(0,318-(XSIZE-XHOT)),Y Hard(0,198-(YSIZE-YHOT))
  66.    X Mouse=TX : Y Mouse=TY
  67.    Screen 1
  68.    Print At(0,0);"Sprite number:";SPNUM;"  ";
  69.    Print At(65,0);"Bitplanes:";BITPLANES;"  ";
  70.    Print At(0,2);"Xsize:";XSIZE;"  ";At(65,2);"Ysize:";YSIZE;"  ";
  71.    Print At(0,4);"Xhotspot:";XHOT;"  ";At(65,4);"Yhotspot:";YHOT;"  ";
  72.    Print At(30,0);"BORDER COLOUR:";BCOL;"  ";
  73.    Screen 0
  74. End Proc
  75. Procedure FILE_LOAD
  76.    Amal Off 
  77.    Show On : Limit Mouse 
  78.    NAME$=Fsel$("*.Abk","","PICK A SPRITE BANK TO LOAD")
  79.    If NAME$<>""
  80.       Erase 1 : Screen 0
  81.       Load NAME$ : Get Sprite Palette 
  82.       SPNUM=1 : Amreg(0)=1
  83.       FIND_SPRITE_SIZE
  84.       Channel 1 To Bob 1
  85.    End If 
  86.    Hide On 
  87.    Bob 1,X Screen(0,X Mouse),Y Screen(0,Y Mouse),SPNUM
  88.    Amal 1,"B: Let A=RA ; Let X=XScreen(0,XMouse) ; Let Y=YScreen(0,YMouse) Jump B"
  89.    Amal On 1
  90. End Proc
  91. Procedure PIC_SAVE
  92.    Bob Off 1
  93.    Amal Off : Update : Update 
  94.    Show On : Limit Mouse 
  95.    NAME$=Fsel$("*.Iff","","PICK A PICTURE NAME TO SAVE")
  96.    If NAME$<>""
  97.       Save Iff NAME$
  98.    End If 
  99.    Hide On 
  100.    FIND_SPRITE_SIZE
  101.    Bob 1,X Screen(0,X Mouse),Y Screen(0,Y Mouse),SPNUM
  102.    Amal 1,"B: Let A=RA ; Let X=XScreen(0,XMouse) ; Let Y=YScreen(0,YMouse) Jump B"
  103.    Amal On 1 : Wait Vbl : Update 
  104. End Proc
  105. Procedure PLACE_BOB
  106.    Repeat : TEMP=Mouse Key : Until TEMP<>1
  107.    TEMPX=X Mouse : TEMPY=Y Mouse
  108.    If TEMP=3
  109.       Bob Off 1 : Wait 2
  110.       Wait Vbl : Screen Copy Physic(0) To 2 : Wait 2
  111.       Paste Bob X Screen(0,TEMPX-XHOT),Y Screen(0,TEMPY-YHOT),SPNUM
  112.       TX=TEMPX-XHOT : TY=TEMPY-YHOT
  113.       Ink BCOL : Box X Screen(0,TX-1),Y Screen(0,TY-1) To X Screen(0,TX+XSIZE+1),Y Screen(0,TY+YSIZE+1)
  114.       Bob 1,X Screen(0,X Mouse),Y Screen(0,Y Mouse),SPNUM
  115.       Amal 1,"B: Let A=RA ; Let X=XScreen(0,XMouse) ; Let Y=YScreen(0,YMouse) Jump B"
  116.       Amal On 1
  117.    End If 
  118. End Proc
  119. Procedure CLEAR_SCREEN
  120.       Bob Off 1 : Wait 2
  121.       Wait Vbl : Screen Copy Physic(0) To 2 : Wait 2
  122.       TX=TEMPX-XHOT : TY=TEMPY-YHOT
  123.       Cls 0
  124.       Bob 1,X Screen(0,X Mouse),Y Screen(0,Y Mouse),SPNUM
  125.       Amal 1,"B: Let A=RA ; Let X=XScreen(0,XMouse) ; Let Y=YScreen(0,YMouse) Jump B"
  126.       Amal On 1
  127. End Proc
  128. Procedure UNDO
  129.       Bob Off 1 : Wait 4
  130.       Screen Copy 2 To Physic(0) : Wait 4
  131.       Screen Copy 2 To Logic(0) : Wait 4
  132.       Bob 1,X Screen(0,X Mouse),Y Screen(0,Y Mouse),SPNUM
  133.       Amal 1,"B: Let A=RA ; Let X=XScreen(0,XMouse) ; Let Y=YScreen(0,YMouse) Jump B"
  134.       Amal On 1
  135. End Proc